//---------------------------------------------------------------------------------------------------------------------------------------------------
// <copyright file="Challenge1.cs" company="DarkWynter Studios">
//     Copyright (C)2007 DarkWynter Studios.  All rights reserved.
// </copyright>
//---------------------------------------------------------------------------------------------------------------------------------------------------
// {Contact : darkwynter.com for licensing information
//---------------------------------------------------------------------------------------------------------------------------------------------------


namespace DarkWynter.Engine.Controllers
{
    using System;
    using System.Collections.Generic;
    using System.Text;
    using Microsoft.Xna.Framework;
    using Microsoft.Xna.Framework.Input;
    //using DarkWynter.Engine.ObjectLib;
    //using DarkWynter.Engine.Menus;

    /// <summary>
    /// Controller Vector2 Event Arguments
    /// Represents the value of the input coming from the controler.
    /// </summary>
    public class ControllerVec2EventArgs : EventArgs
    {
        /// <summary>
        /// Vector2 argument
        /// </summary>
        public readonly Vector2 value;
        /// <summary>
        /// List of objects passed through Controller Update.
        /// Generally you want to pass the scenegraph or menusystem through this pipeline.
        /// </summary>
        List<object> objects;

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="controlValue">Vector2 value</param>
        /// <param name="objLib">Object Library</param>
        /// <param name="menuSys">Menu System</param>
        public ControllerVec2EventArgs(Vector2 controlValue, ref List<object> argObjects)
        {
            value = controlValue;
            objects  = argObjects;
        }
    }
    /// <summary>
    /// Controller float Event Arguments
    /// Represents the value of the input coming from the controler.
    /// </summary>
    public class ControllerFloatEventArgs : EventArgs
    {
        /// <summary>
        /// Float argument
        /// </summary>
        public readonly float value;
        /// <summary>
        /// List of objects passed through Controller Update.
        /// Generally you want to pass the scenegraph or menusystem through this pipeline.
        /// </summary>
        List<object> objects;

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="controlValue">Float value</param>
        /// <param name="objLib">Object Library</param>
        /// <param name="menuSys">Menu System</param>
        public ControllerFloatEventArgs(float controlValue, ref List<object> argObjects)
        {
            value = controlValue;
            objects = argObjects;
        }
    }
    /// <summary>
    /// Controller integer Event Arguments
    /// Represents the value of the input coming from the controler.
    /// </summary>
    public class ControllerIntEventArgs : EventArgs
    {
        /// <summary>
        /// Integer argument
        /// </summary>
        public readonly int value;
        /// <summary>
        /// List of objects passed through Controller Update.
        /// Generally you want to pass the scenegraph or menusystem through this pipeline.
        /// </summary>
        List<object> objects;

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="controlValue">Integer value</param>
        /// <param name="objLib">Object Library</param>
        /// <param name="menuSys">Menu System</param>
        public ControllerIntEventArgs(int controlValue, ref List<object> argObjects)
        {
            value = controlValue;
            objects = argObjects;
        }
    }
    /// <summary>
    /// Controller boolean Event Arguments
    /// Represents the value of the input coming from the controler.
    /// </summary>
    public class ControllerBoolEventArgs : EventArgs
    {
        /// <summary>
        /// Boolean argument
        /// </summary>
        public readonly bool value;
        /// <summary>
        /// List of objects passed through Controller Update.
        /// Generally you want to pass the scenegraph or menusystem through this pipeline.
        /// </summary>
        List<object> objects;

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="controlValue">Boolean value</param>
        /// <param name="objLib">Object Library</param>
        /// <param name="menuSys">Menu System</param>
        public ControllerBoolEventArgs(bool controlValue, ref List<object> argObjects)
        {
            value = controlValue;
            objects = argObjects;
        }
    }
    /// <summary>
    /// Controller void Event Arguments
    /// Represents the value of the input coming from the controler.
    /// </summary>
    public class ControllerVoidEventArgs : EventArgs
    {
        /// <summary>
        /// List of objects passed through Controller Update.
        /// Generally you want to pass the scenegraph or menusystem through this pipeline.
        /// </summary>
        List<object> objects;

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="objLib">Object Library</param>
        /// <param name="menuSys">Menu System</param>
        public ControllerVoidEventArgs(ref List<object> argObjects)
        {
            objects = argObjects;
        }
    }
}
